package com.boot.apollo.modules.guava;

import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;

import java.util.concurrent.TimeUnit;

public class CacheTest {






    /**
     * 谷歌LoadingCache缓存使用：
      load方法:当key不存在时，执行load获取对应的value，并写入缓存，下次直接从缓存获取;
      CacheLoader为泛型，可指定返回值类型
     */

     private  static   LoadingCache<String, String> configCache = CacheBuilder.newBuilder().
            expireAfterAccess(1, TimeUnit.HOURS) // 访问1个小时后过期
            .maximumSize(10000) // 设置个数
            .build(new CacheLoader<String, String>() {
                @Override
                public String load(String key) throws Exception {
                    if (key.contains("1")) {
                        return "test1";
                    } else {
                        return key;
                    }
                }
            });






    public static void main(String[] args) throws Exception {
        System.out.println( configCache.get("test1") );
        System.out.println( configCache.get("test1") );
        System.out.println( configCache.get("test4") );
        System.out.println( configCache.get("test4") );
    }










}
